<?php

use App\Http\Controllers\ProvisionServer;
use App\Http\Controllers\TestController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PhotoController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

// 重定向路由
// Route::redirect('/', 'demo', 301);

// Route::get('/', function () {
//     return view('welcome');
// });

// 视图路由
Route::view('/','welcome');

// test页面路由 第一个参数 路由地址 第二指向某个方法
Route::get('test',[TestController::class,'index']);

Route::get('/test/user',[TestController::class,'user']);

Route::get('demo',function(){
    return '该页面您无权限访问';
});

// 既可以访问页面同时处理表单提交数据 注册一个既可以get方法也可以post请求的路由
// match 第一个参数 指定哪些请求能访问该路由 第二个参数 路由地址 第三个参数 方法
// any 可以处理任何请求 参数跟get的参数一样
Route::any('/test/form',[TestController::class,'form']);

// Route::get('/user/index',function(){
//     // 重定向
//     return redirect('demo');
// });

// 指定路由要经过中间件处理
Route::get('user/index',[TestController::class,'user'])->middleware('LoginAuth');

// 视图路由 第一个参数 路由地址 第二个参数 指向哪个视图 第三个参数 变量赋值视图使用
Route::view('test/demo','test',['username' => 'demo']);

// 路由的必选参数
// Route::get('user/info/{id}',[TestController::class,'info']);
// 可选参数 + 正则约束 => 约束id只能传数字进去
Route::get('user/info/{id?}',[TestController::class,'info'])->where('id','\d+');


// 错误提示路由 路由名 => 简洁 用来替代路由地址
Route::any('error',[TestController::class,'error'])->name('error');

// 定义一个路由 后台user 添加 编辑的路由
/* 
    admin/user/add
    admin/user/edit
*/
/* 
    prefix => 路由前缀
    group => 路由分组
    这两个属性组合使用 => 把相同路由前缀分同一个组里面
*/
Route::prefix('admin/user')->group(function(){
    Route::get('add',[UserController::class,'add']);
    Route::get('edit',function(){
        return '这是编辑用户';
    });
    Route::get('index',[UserController::class,'index']);
    Route::get('test',[UserController::class,'test']);
    Route::get('demo',[UserController::class,'demo']);
    Route::post('addform',[UserController::class,'addform']);
});

// Route::get('show/{id}',[UserController::class,'show']);
Route::any('show',[UserController::class,'show']);

Route::get('user/login',function(){
    return '这是登录页';
});

Route::get('server',ProvisionServer::class);

Route::resource('photos', PhotoController::class);


